<?php

namespace Plugins\AdminBasic\Models;

use App\Models\Model;
use Carbon\Carbon;
use App\Models\Attributes\CreateSql;


/**
 * 操作日志
 * 
 * @property int    $id          ID
 * @property string $request_id  请求ID
 * @property string $method      请求方式
 * @property string $module      模块
 * @property string $url         请求地址
 * @property array  $data        请求参数
 * @property string $query       请求参数
 * @property string $des         描述
 * @property string $user_model  用户模型
 * @property int    $user_id     用户ID
 * @property array  $user_info   用户信息
 * @property string $ip          IP
 * @property array  $sql         执行sql
 * @property array  $exception   异常信息
 * @property Carbon $create_time 创建时间
 * @property Carbon $update_time 更新时间
 * @property int    $delete_time 删除时间
 */
#[CreateSql(<<<SQL
CREATE TABLE `sd_operation_logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `request_id` char(13) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '请求ID',
  `method` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '请求方式',
  `module` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '模块',
  `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '请求地址',
  `data` json DEFAULT NULL COMMENT '请求参数',
  `query` varchar(9999) COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '请求参数',
  `des` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '描述',
  `user_model` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '用户模型',
  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID',
  `user_info` json DEFAULT NULL COMMENT '用户信息',
  `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'IP',
  `sql` json DEFAULT NULL COMMENT '执行sql',
  `exception` json DEFAULT NULL COMMENT '异常信息',
  `create_time` datetime NOT NULL COMMENT '创建时间',
  `update_time` datetime NOT NULL COMMENT '更新时间',
  `delete_time` int(11) DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`),
  KEY `user_model` (`user_model`,`user_id`),
  KEY `url` (`url`),
  KEY `create_time` (`create_time`)
) ENGINE=InnoDB AUTO_INCREMENT=69 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='操作日志'
SQL)]
class BasicOperationLogs extends Model
{


    protected array $casts = [
        ...self::DEFAULT_CASTS,
        'id' => 'int',
        'data' => 'array',
        'user_id' => 'int',
        'user_info' => 'array',
        'sql' => 'array',
        'exception' => 'array'
    ];

    protected array $fillable = ['request_id', 'method', 'module', 'url', 'data', 'query', 'des', 'user_model', 'user_id', 'user_info', 'ip', 'sql', exception::class];

    protected ?string $table = 'basic_operation_logs';
}